apt.py: use subprocess.run with check=True instead of check_call when capturing stdout and stderr #114
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It's inadvisable to use
check_call
withstdout=PIPE
andstderr=PIPE
, as the child process will block if enough output is generated (see Note in https://docs.python.org/3/library/subprocess.html#subprocess.check_call)We've seen some hanging subprocesses in the
landscape-server
charm due to this (and other, already addressed issues): https://bugs.launchpad.net/landscape/+bug/2033091This change uses
subprocess.run
instead, withcapture_output=True
andcheck=True
. Behaviour should be the same, except avoiding the aforementioned blocking issue.